#include "printf.h"
#include <stdbool.h>
#include <stdio.h>
#include <stm32f10x.h>
#include <string.h>

void delay_ms(int ms) {
    int i = 0;
    while (ms--) {
        for (i = 0; i < 1000; i++)
            ;
    }
}

void init_GPIOA_0_7() {

    GPIO_InitTypeDef def;

    def.GPIO_Mode = GPIO_Mode_Out_PP;
    def.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    def.GPIO_Speed = GPIO_Speed_50MHz;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

    GPIO_Init(GPIOA, &def);

    GPIO_Write(GPIOA, 0x0);

    def.GPIO_Mode = GPIO_Mode_IPU;
    def.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
    GPIO_Init(GPIOA, &def);
}

int main() {

    uint16_t GPIOA_Data = 0;

    init_GPIOA_0_7();
    printf_init(9600);

    while (true) {

        GPIOA_Data = GPIO_ReadInputData(GPIOA);
		printf("%#X\r\n", GPIO_ReadInputData(GPIOA));
        GPIOA_Data |= 1;
        GPIO_Write(GPIOA, GPIOA_Data);
        printf("%#X\r\n", GPIO_ReadInputData(GPIOA));
		while(true){
			printf("%#X\r\n", GPIO_ReadInputData(GPIOA));
			delay_ms(5000);
		}

        //delay_ms(5000);
    }

    return 0;
}